package com.cty.HashTable;
/*
*
* 哈希表
* */
public class HashTab {
    //创建一个链表数组
    EmpLinkedList [] empLinkedLists;
    //链表数组的大小
    int size;
    //寻找时用的变量
    Emp temp;
    //初始化来年表数组
    public HashTab(int size) {
        this.size = size;
        empLinkedLists = new EmpLinkedList[size];
        //将链表创建出来
        for (int i = 0;i < empLinkedLists.length;i++) {
            empLinkedLists[i] = new EmpLinkedList();
        }
    }

    //写一个hash方法
    public int hashFun(int i) {
        return i % size ;
    }

    //添加方法
    public void add(Emp emp) {
        //hash出要加入第几条链表
        int EmpAddNo = hashFun(emp.id);
        empLinkedLists[EmpAddNo].add(emp);
    }

    //写一个遍历方法
    public void list() {
        for (int i = 0;i < size;i++) {
            empLinkedLists[i].list(i);
        }
    }

    //写一个寻找方法
    public void find(int id) {
        temp = empLinkedLists[hashFun(id)].find(id);
        if (temp == null) {
            System.out.printf("没有找到id为%d的员工\n",id);
        } else {
            System.out.printf("该员工的信息:id:%d,姓名:%s",id,temp.name);
        }
    }

    //写一个删除方法
    public void delete(int id) {
        empLinkedLists[hashFun(id)].delete(id);
    }
}
